package com.xueyi.aixihu.service;

import com.xueyi.aixihu.entity.dto.AuditNewsDto;
import com.xueyi.aixihu.entity.dto.NewsDto;
import com.xueyi.aixihu.entity.po.DtNews;
import com.xueyi.aixihu.entity.po.DtNewsSort;
import com.xueyi.aixihu.entity.vo.*;
import com.xueyi.aixihu.exception.SzException;
import com.xueyi.aixihu.reqeust.*;
import com.xueyi.aixihu.response.ArticleListResponse;
import com.xueyi.aixihu.response.DtOneFinanceLogRes;
import com.xueyi.aixihu.response.FindPartyPolicyNewsResponse;
import com.xueyi.aixihu.response.RemoveArticleAreaReq;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

/**
 * @authoer:hxs
 * @createDate:2022/8/16
 * @description: 文章操作业务
 */
public interface DtNewsService {
    /**
     * 条件查询文章列表
     *
     * @param changeClassifyReq
     * @return
     */
    ArticleListResponse findArticleList(ChangeClassifyReq changeClassifyReq) throws SzException;

    /**
     * 查询一个
     *
     * @param contentId
     * @return
     */
    Map<String, Object> findNewsByOne(Integer contentId,Integer showType);


    /**
     * 修改文章展示状态
     *
     * @param contentId
     * @return
     */
    void updateArticleStatus(Integer contentId) throws SzException;


    /**
     * 新增文章
     *
     * @param dtNewsReq
     * @return
     */
    void addArticle(DtNewsReq dtNewsReq) throws SzException, ParseException;

    /**
     * 编辑文章
     *
     * @param dtNewsReq
     */
    void updateArticle(DtNewsReq dtNewsReq) throws SzException, ParseException;

    /**
     * 回显文章数据
     *
     * @param findArticleReq
     * @return
     */
    ArticleVo findArticleById(FindArticleReq findArticleReq) throws SzException;

    /**
     * 获取微信文章并同步到数据库
     *
     * @param wxArticleReq
     * @return
     */
    List<WxArticleVo> findWxArticleFromWx(WxArticleReq wxArticleReq) throws SzException;


    /**
     * 获取微信文章列表
     *
     * @param findWxArticlesReq
     * @return
     */
    List<WxArticleVo> findWxArticles(FindWxArticlesReq findWxArticlesReq) throws SzException;

    /**
     * 获取微信文章总条数
     *
     * @param findWxArticlesReq
     * @return
     */
    Integer findWxArticlesTotal(FindWxArticlesReq findWxArticlesReq) throws SzException;


    /**
     * 修改微信文章显示状态
     *
     * @param wxArticlesIsVisible
     */
    void updateWxArticlesIsVisible(WxArticlesIsVisibleReq wxArticlesIsVisible) throws SzException;

    /**
     * 修改微信文章所属社区
     *
     * @param updateWxArticleAreaReq
     */
    void updateWxArticleArea(UpdateWxArticleAreaReq updateWxArticleAreaReq) throws SzException;

    /**
     * 逻辑删除文章
     *
     * @param removeArticleAreaReq
     */
    void removeArticleArea(RemoveArticleAreaReq removeArticleAreaReq) throws SzException;

    /**
     * 获取党政新闻列表
     *
     * @param findPartyPolicyNewsReq
     * @return
     */
    FindPartyPolicyNewsResponse findPartyPolicyNews(FindPartyPolicyNewsReq findPartyPolicyNewsReq);

    /**
     * 查询用户的管辖地区
     *
     * @return
     */
    List<DtNewsSort> findSortList(Integer type) throws SzException;


    /**
     * 通过pid查询用户管理的地址信息
     *
     * @param pid
     * @return
     */
    List<DtNewsSort> findUserManageSortByPid(Integer pid);

    /**
     * 查询当前用户的顶级地址信息
     *
     * @return
     */
    List<DtNewsSort> findSortParent();

    /**
     * 查询昌东镇的文章类型
     *
     * @param type
     * @return
     */
    List<CdzSystemType> findCdzType(Integer type);

    /**
     * 公开文章
     *
     * @param contentId
     */
    Boolean publicContent(Integer contentId, Integer type) throws SzException;

    /**
     * 转换草稿
     * @param contentId
     */
    void convertDrafts(Integer contentId, Integer type) throws SzException;


    /**
     * 提交审核
     *
     * @param contentId
     * @return
     */
    Boolean submitAudit(Integer contentId, Integer type) throws SzException;

    /**
     * 获取数据
     *
     * @param type
     * @return
     */
    ContentListDataVo findContentData(Integer type);

    /**
     * 审核村务党务财务
     *
     * @param auditNewsDto
     */
    void auditDtNews(AuditNewsDto auditNewsDto) throws SzException;


    /**
     * 查询需要审核的文章列表
     *
     * @param changeClassifyReq
     */
    TableData<DtNewsVo> auditNewsTable(NewsDto changeClassifyReq) throws SzException;
}
